﻿using Knlght.Domain;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace Knlght.CH.Domain.IRepository
{
    public interface IRepositoryBase : IDisposable
    {
        IRepositoryBase BeginTrans();
        bool Commit();
        bool Insert<TModel>(TModel model) where TModel : class;
        bool InsertToList<TModel>(List<TModel> entitys) where TModel : class;
        bool Update<TModel>(TModel model) where TModel : class;
        bool UpdateToList<TModel>(Expression<Func<TModel, bool>> predicate, Expression<Func<TModel, TModel>> key) where TModel : class;
        bool Delete<TModel>(Expression<Func<TModel, bool>> query) where TModel : class;
        TModel GetModel<TModel>(object propertyValue) where TModel : class;
        TModel GetModel<TModel>(Expression<Func<TModel, bool>> query) where TModel : class;
        List<TModel> Getlist<TModel>() where TModel : class;
        List<TModel> GetList<TModel>(Expression<Func<TModel, bool>> query) where TModel : class;
        List<TModel> GetList<TModel>(string strSql) where TModel : class;
        List<TModel> GetList<TModel>(string strSql, object[] dbParameter) where TModel : class;
      
    }
}
